package com.java.base.exercise.annonation;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * @Author：RenPu
 * @Package：com.java.base.exercise.annonation
 * @Project：spring-cloud-imooc-demo
 * @name：JunitMain
 * @Date：2024/6/1 17:55
 * @Filename：JunitMain
 */
public class JunitMain {


    public static void main(String[] args) throws Exception {


        JunitTest junitTest = new JunitTest();

        Class<?> junitTestClass = JunitTest.class;

        //获取类对象中所有的方法
        Method[] methods = junitTestClass.getDeclaredMethods();

        //创建符合注解标注的容器
        List<Method> methodList = new ArrayList<>(12);

        for (Method method : methods) {
            if(method.isAnnotationPresent(Test.class)){
                //判断方法的注解，是否被禁用装到容器里
                if(!method.getAnnotation(Test.class).disabled()){
                    methodList.add(method);
                }
            }
        }


        //将容器的标注的方法对象，根据注解的排序属性进行排序
         methodList.sort(Comparator.comparingInt(item->item.getAnnotation(Test.class).priority()));

        //遍历执行容器中的方法

        for (Method method : methodList) {

            method.invoke(junitTest,null);

        }






    }


}
